/**************************************************************************
Copyright (C) jianbo miao Corporation.  All Rights Released.
this is a 3d engin named our_3d_engin.
our_3d_engin feature:
1:there is no float.
2:it do the 3d things all by softwear.
3:base on 1 and 2 , it can execution on arm which have no 3d hardwear accelerate.

  if you have any  suggestion or question,pls contact with me
  mail:miaojb@126.com
  msn:miaojianbo@hotmail.com
  qq:30209027
  
    2008/01/01
***************************************************************************/
#ifndef OUR_MAIN_H
#define OUR_MAIN_H

#include "our_math.h"
#include "our_3d.h"
//==========================
//==========================
//==========================
//==========================

#define THREE_NUM 5
#define CLR_BC 0x0A


#define LINE 5    

//48*12=576
#define P_NUM ((LINE+1)*8)
//100*40=4K
#define T_NUM ((LINE*16)+8)

//48*12=576
#define P_NUM2 (6)
//100*40=4K
#define T_NUM2 (6)
enum
{
    KEY_UP,
    KEY_DOWN,
    KEY_LEFT,
    KEY_RIGHT,
};
//---------------------------------------------------//8K
typedef struct 
{    
    UINT		FrameTH;
    UINT		point_changed_num;
    UINT		triangle_drawed_num;
    
    UINT		point_do1[P_NUM];               //48*4=192
    UINT		Triangle_do1[T_NUM];        //400
    FIX_POINT3D 	point_org1[P_NUM];      //576
    FIX_POINT3D 	point_nor1[P_NUM];      //576
    FIX_POINT3D 	point_work1[P_NUM];     //576
    CLR             clr_work1[P_NUM*3];         //576
    OUR_3D_TRAG  triangle_work1[T_NUM]; //4K
    
    OUR_3D_CAM	cam_work;                   //96
    OUR_3D_OBJ	obj;                               
    //OUR_3D_OBJ	obj_P[5];                       //180*5=900
    
    FIX_POINT3D 	point_obj_pos;              //12
    OUR_3D_LIT	point_lit;                      //36
  ///=============================================  
    UINT		point_do2[P_NUM2];               //48*4=192
    UINT		Triangle_do2[T_NUM2];        //400
    FIX_POINT3D 	point_org2[P_NUM2];      //576
    FIX_POINT3D 	point_nor2[P_NUM2];      //576
    FIX_POINT3D 	point_work2[P_NUM2];     //576
    CLR             clr_work2[P_NUM2*3];         //576
    OUR_3D_TRAG  triangle_work2[T_NUM2]; //4K
    OUR_3D_CAM	cam_work2;                   //96
    OUR_3D_OBJ	obj2;                               

    
    //LARGE_INTEGER		TIME;
}OUR_GLOBAL,*OUR_GLOBAL_PTR;


extern OUR_GLOBAL	global;/**/
//============================================
int OUR_3D_Init(void);
//extern int Game_Shutdown(void);
int OUR_3D_Main(UCHAR *video_buffer, int lpitch, int FPS);


//extern int Game_Init2(void);
//extern int Game_Shutdown2(void);
//extern int Game_Main2(UCHAR *video_buffer, int lpitch, int FPS);
void OUR_draw_bmp_SB( OUR_3D_OBJ_PTR	obj,UCHAR *video_buffer, int lpitch);

#endif